﻿Imports System.Data.SqlClient

Public Class Exportar
    Private Sub btnIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIniciar.Click

        If FolderBrowserDialog1.SelectedPath <> "" Then

            Try
                'creo la carpeta
                'System.IO.Directory.CreateDirectory(txtRuta.Text)

                'Exporto tablas a txt
                exportar()

                Dim i As Int32
                For i = 1 To 10000000
                    ''no hago nada, hago tiempo
                Next

                'valido existencia de archivos del exportado
                If validarExportado() Then
                    MessageBox.Show("Exportado de tablas correcto" + vbCrLf + "Vea los archivos en la carpeta: " + vbCrLf + _
                        txtRuta.Text, "Exportado de tablas realizado con éxito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
                Else
                    MessageBox.Show("Si reintenta exportar sin exito, reinicie el ordenador y reintente nuevamente", _
                                    "Exportado de tablas no finalizado", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If

            Catch ex As Exception
                MessageBox.Show(ex.Message, "Excepción controlada", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)

            End Try
        End If

    End Sub
    '------------------------------------------------------------------------------
    'recibo direccion base y genero la direccion destino donde estaran los txt
    ' <direccion otorgada>\<fecha>\<hora>

    Private Sub btnDestino_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDestino.Click
        FolderBrowserDialog1.Description = "Indique el destino para exportar"
        FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal
        FolderBrowserDialog1.ShowDialog()

        If FolderBrowserDialog1.SelectedPath <> "" Then
            Dim fechaRuta As String

            fechaRuta = FolderBrowserDialog1.SelectedPath
            'fechaRuta += "\" + Date.Now().ToShortDateString.Replace("/", "-") + _
            '             "\" + Date.Now().ToShortTimeString.Replace(" ", "-").Replace(":", "-")

            txtRuta.Text = fechaRuta
            btnIniciar.Enabled = True
        Else
            btnIniciar.Enabled = False
        End If

    End Sub

    '------------------------------------------------------------------
    'creo carpeta(fecha) para los 12 archivos y exporto dentro de ella
    Private Sub exportar()
        Dim cmdBCP As String = ""
        Dim p As Process = New Process()
        Dim psi As ProcessStartInfo = New ProcessStartInfo("cmd.exe")
        Dim Cod_Suc As Int32 = Configuracion.Cod_Suc
        pbExporta.Value = 0
        pbExporta.Visible = True
        pbExporta.Maximum = 12

        'mantiene el cmd oculto
        psi.WindowStyle = ProcessWindowStyle.Hidden

        For cont As Integer = 1 To 12 Step 1
            pbExporta.Value = cont
            Select Case cont
                Case 1
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.empleado where Cod_Suc = " & Cod_Suc.ToString.Trim & """ queryout " & Chr(34) & txtRuta.Text & "\empleado.txt"" -c -T -S localhost\sqlexpress"
                Case 2
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.cliente where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\cliente.txt"" -c -T -S localhost\sqlexpress"
                Case 3
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.catalogo where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\catalogo.txt"" -c -T -S localhost\sqlexpress"
                Case 4
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.presupuesto where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\presupuesto.txt"" -c -T -S localhost\sqlexpress"
                Case 5
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.presupuesto_detalle where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\presupuesto_detalle.txt"" -c -T -S localhost\sqlexpress"
                Case 6
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.ventas where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\ventas.txt"" -c -T -S localhost\sqlexpress"
                Case 7
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.venta_detalle where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\venta_detalle.txt"" -c -T -S localhost\sqlexpress"
                Case 8
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.orden_servicio where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\orden_servicio.txt"" -c -T -S localhost\sqlexpress"
                Case 9
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.orden_servicio_detalle where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\orden_servicio_detalle.txt"" -c -T -S localhost\sqlexpress"
                Case 10
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.orden_servicio_consumos where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\orden_servicio_consumos.txt"" -c -T -S localhost\sqlexpress"
                Case 11
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.orden_rma where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\orden_rma.txt"" -c -T -S localhost\sqlexpress"
                Case 12
                    cmdBCP = "bcp ""SELECT * FROM UTN_INFORMATICA.dbo.sorteo where Cod_Suc = " & Cod_Suc.ToString.Trim & """  queryout " & Chr(34) & txtRuta.Text & "\sorteo.txt"" -c -T -S localhost\sqlexpress"
            End Select

            psi.Arguments = "/c " + cmdBCP
            p.StartInfo = psi
            p.Start()
            Dim i As Int32
            For i = 1 To 100000000
                ''no hago nada, hago tiempo
            Next
        Next
        pbExporta.Value = 12
        pbExporta.Visible = False
    End Sub

    '-------------------------------------------------------------------------------------------------
    'si no existen todos los archivos borro la carpeta generada en funcion exportar y retorno false
    'si existen todos retorno true
    Private Function validarExportado() As Boolean
        Dim i As Int32
        For i = 1 To 100000000
            ''no hago nada, hago tiempo
        Next

        If System.IO.File.Exists(txtRuta.Text + "\ventas.txt") And _
                System.IO.File.Exists(txtRuta.Text + "\presupuesto.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\presupuesto_detalle.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\catalogo.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\cliente.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\empleado.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\orden_rma.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\orden_servicio.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\orden_servicio_consumos.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\orden_servicio_detalle.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\venta_detalle.txt") And _
                    System.IO.File.Exists(txtRuta.Text + "\sorteo.txt") Then
            Return True
        Else
            'System.IO.Directory.Delete(txtRuta.Text, True)
            Return False
        End If

    End Function

    'Private Sub Exportar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '    MessageBox.Show("La siguiente ventana contiene opciones avanzadas, que requieren el debido conocimiento del usuario." + vbCrLf + _
    '               "Recuerde leer el manual antes de usarla", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Information)
    'End Sub

    Private Sub Exportar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        pbExporta.Visible = False
    End Sub
End Class